For large scale databases, a key feature is fault tolerance. Loss of access to data for a day, an hour, or even a few minutes may not be acceptable. For example, an email user whose data is stored at a distant server expects access to the email at all times.
One way to address fault tolerance is to maintain multiple copies of data at distinct geographic locations. This is commonly called a distributed database. Even if one copy of the data is unavailable (e.g., due to a power outage or hardware failure), one of the other replicas can seamlessly provide the data. However, maintaining multiple copies of data at distinct sites introduces the potential problem of having different data at different replicas.
One technique introduced to keep multiple databases synchronized is the Paxos consensus algorithm. This methodology can successfully keep replicas synchronized under most typical scenarios, but is slower than desired, especially for large scale databases. One reason for the slow speed is that requests to write to the database within each Paxos group are single threaded.